package com.reload.stream;

import java.util.UUID;
import java.util.function.*;

/**
 * @Date: 2024/4/24 下午3:46
 * @Version: 17
 * @Author: Reloading
 * @Description: 关于函数值接口
 */
public class KnowFunction {
    /*
    有入参 无返回值
    有入参 有返回值
    无入参 无返回值
     */
    public static void main(String[] args) {
        // Consumer 消费者 -- 有入参 无返回值
        Consumer<String> consumer = (String x) -> System.out.println("consumer = " + x);
        consumer.accept("consumer");
        BiConsumer<String, String> biConsumer = (a, b) -> System.out.println("a = " + a + ",b = " + b);
        biConsumer.accept("a", "b");

        // Function 多功能函数 -- 有入参 有返回值
        Function<String, Integer> function = (String x) -> Integer.parseInt(x);
        System.out.println(function.apply("1"));
        BiFunction<String, Integer, Long> biFunction = (a, b) -> 888L;
        System.out.println(biFunction.apply("1", 2));

        // Supplier 提供者 -- 无入参 无返回值
        Supplier<String> supplier = () -> UUID.randomUUID().toString();
        System.out.println(supplier.get());

        // Predicate 判断者 -- 返回true/false
        Predicate<String> predicate = (String x) -> x.length() > 0;
        System.out.println("Predicate 断言 正向判断====> " + predicate.test("1"));
        System.out.println("Predicate 断言 反向判断====> " + predicate.negate().test("1"));

    }
}
